// 引入axios
import axios from "axios";

// 封装一个网络请求的实例request
export function request(config) {
  // instance为一个局部网络请求的默认配置
  const instance = axios.create({
    baseURL: "",
    timeout: 5000
  });

  // 2. axios拦截器
  // 2.1 请求拦截的作用
  // request 拦截请求
  instance.interceptors.request.use(
    config => {
      // 1. 比如config中的一些信息不符合服务器要求

      // 2.比如每次发送网络请求时, 都希望在界面中显示一个请求图标

      // 3. 某些网络请求(例如登录(token)),必须携带一些特殊信息

      // *一定要返回出去,否者会拿不到这次请求的数据
      return config;
    },
    err => {
      console.log(err);
      return err;
    }
  );

  // response拦截响应
  instance.interceptors.response.use(
    res => {
      // *一定要返回出去,否者会拿不到这次请求的数据
      return res.data;
    },
    err => {
      console.log(err);
      return err;
    }
  );

  // 3. 发送真正的网络请求
  return instance(config);
}
